package com.cxso.example.domain.wlpt.waybill;

import com.cxso.example.enums.wlpt.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Setter
@Getter
@Accessors(chain = true)
@Schema(description = "运单基础信息")
public class ApiWaybillBasicDetailDomain {

    @Schema(description = "运单ID")
    private String id;

    @Schema(description = "运单号")
    private String billCode;

    @Schema(description = "货源单号")
    private String goodsCode;

    @Schema(description = "订单号")
    private String orderCode;

    @Schema(description = "计划单号")
    private String planCode;

    @Schema(description = "运输方式")
    private TransportTypeEnum transportType;

    @Schema(description = "司机姓名")
    private String driverName;

    @Schema(description = "司机手机号")
    private String driverPhone;

    @Schema(description = "车牌号")
    private String licensePlateNumber;

    @Schema(description = "车型")
    private VehicleTypeEnum vehicleType;

    @Schema(description = "车长")
    private BigDecimal vehicleLength;

    @Schema(description = "提货时间")
    private Date pickGoodsTime;

    @Schema(description = "运抵时间")
    private Date arriveTime;

    @Schema(description = "运单状态")
    private BillStatusEnum billStatus;

    @Schema(description = "覆盖状态")
    private CoverStatusEnum coverStatus;

    @Schema(description = "核对状态")
    private CheckStatusEnum checkStatus;

    @Schema(description = "核对时间")
    private Date checkTime;

    @Schema(description = "开票状态")
    private InvoiceStatusEnum invoiceStatus;

    @Schema(description = "开票时间")
    private Date invoiceTime;

    @Schema(description = "定位方式")
    private LocationTypeEnum locationType;

    @Schema(description = "定位状态")
    private LocationStatusEnum locationStatus;

    @Schema(description = "是否车队长收运费 true是  false 及有车队长ID 收佣金")
    private Boolean isLeaderPayee;

    @Schema(description = "车队长类型")
    private AccountTypeEnum leaderType;

    @Schema(description = "回单状态")
    private ReceiptStatusEnum receiptStatus;

    @Schema(description = "回单合规状态")
    private ReceiptComplianceStatusEnum receiptComplianceStatus;

    @Schema(description = "回单")
    private List<ApiWaybillReceiptDetailDomain> receipt;

    @Schema(description = "回单上传时间")
    private Date receiptTime;

    @Schema(description = "保险状态")
    private InsureStatusEnum insureStatus;

    @Schema(description = "要求保险购买方")
    private InsureBuyerEnum insureBuyer;

    @Schema(description = "结算吨重值")
    private BigDecimal settlementWeight;

    @Schema(description = "公里值")
    private BigDecimal kilometer;

    @Schema(description = "吨公里值")
    private BigDecimal tonKilometer;

    @Schema(description = "运单生成时间")
    private Date billGenerationTime;

    @Schema(description = "运单备注")
    private String remark;

}
